﻿//560. 和为 K 的子数组
//给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数 。
//子数组是数组中元素的连续非空序列。
class Solution {
public:
    int subarraySum(vector<int>& nums, int k)
    {
        int ans = 0, pre = 0;
        unordered_map<int, int> hash;
        hash[0] = 1;
        for (int i = 0; i < nums.size(); i++)
        {
            pre += nums[i];
            int tag = pre - k;
            if (hash.find(tag) != hash.end())
            {
                ans += hash[tag];
            }
            hash[pre]++;
        }
        return ans;
    }
};